<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Doxygen: pcl::CovarianceSampling&lt; PointT, PointNT &gt; 模板类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Doxygen
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classpcl_1_1_covariance_sampling.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-types">Public 类型</a> &#124;
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pub-static-methods">静态 Public 成员函数</a> &#124;
<a href="#pro-methods">Protected 成员函数</a> &#124;
<a href="#pro-static-methods">静态 Protected 成员函数</a> &#124;
<a href="#pro-attribs">Protected 属性</a> &#124;
<a href="#pri-types">Private 类型</a> &#124;
<a href="classpcl_1_1_covariance_sampling-members.html">所有成员列表</a>  </div>
  <div class="headertitle">
<div class="title">pcl::CovarianceSampling&lt; PointT, PointNT &gt; 模板类 参考</div>  </div>
</div><!--header-->
<div class="contents">

<p>Point <a class="el" href="class_cloud.html" title="A wrapper which allows to use any implementation of cloud provided by a third-party library.">Cloud</a> sampling based on the 6D covariances. It selects the points such that the resulting cloud is as stable as possible for being registered (against a copy of itself) with ICP. The algorithm adds points to the resulting cloud incrementally, while trying to keep all the 6 eigenvalues of the covariance matrix as close to each other as possible. This class also comes with the <em>computeConditionNumber</em> method that returns a number which shows how stable a point cloud will be when used as input for ICP (the closer the value it is to 1.0, the better).  
 <a href="classpcl_1_1_covariance_sampling.html#details">更多...</a></p>

<p><code>#include &lt;<a class="el" href="covariance__sampling_8h_source.html">covariance_sampling.h</a>&gt;</code></p>
<div class="dynheader">
类 pcl::CovarianceSampling&lt; PointT, PointNT &gt; 继承关系图:</div>
<div class="dyncontent">
 <div class="center">
  <img src="classpcl_1_1_covariance_sampling.png" usemap="#pcl::CovarianceSampling_3C_20PointT_2C_20PointNT_20_3E_map" alt=""/>
  <map id="pcl::CovarianceSampling_3C_20PointT_2C_20PointNT_20_3E_map" name="pcl::CovarianceSampling_3C_20PointT_2C_20PointNT_20_3E_map">
<area href="classpcl_1_1_filter_indices.html" title="FilterIndices represents the base class for filters that are about binary point removal...." alt="pcl::FilterIndices&lt; PointT &gt;" shape="rect" coords="0,112,264,136"/>
<area href="classpcl_1_1_filter.html" title="Filter represents the base filter class. All filters must inherit from this interface." alt="pcl::Filter&lt; PointT &gt;" shape="rect" coords="0,56,264,80"/>
<area href="classpcl_1_1_p_c_l_base.html" title="PCL base class. Implements methods that are used by most PCL algorithms." alt="pcl::PCLBase&lt; PointT &gt;" shape="rect" coords="0,0,264,24"/>
  </map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
<tr class="memitem:a56723f0d423110f9d327ed67e98ff7a5"><td class="memItemLeft" align="right" valign="top"><a id="a56723f0d423110f9d327ed67e98ff7a5"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1_covariance_sampling.html">CovarianceSampling</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, PointNT &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Ptr</b></td></tr>
<tr class="separator:a56723f0d423110f9d327ed67e98ff7a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a607e51921186236680b147d43744ef87"><td class="memItemLeft" align="right" valign="top"><a id="a607e51921186236680b147d43744ef87"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1_covariance_sampling.html">CovarianceSampling</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, PointNT &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstPtr</b></td></tr>
<tr class="separator:a607e51921186236680b147d43744ef87"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classpcl_1_1_filter_indices"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classpcl_1_1_filter_indices')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classpcl_1_1_filter_indices.html">pcl::FilterIndices&lt; PointT &gt;</a></td></tr>
<tr class="memitem:afa28de19aa0b9e1586e67f3cf7d51c52 inherit pub_types_classpcl_1_1_filter_indices"><td class="memItemLeft" align="right" valign="top"><a id="afa28de19aa0b9e1586e67f3cf7d51c52"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloud</b></td></tr>
<tr class="separator:afa28de19aa0b9e1586e67f3cf7d51c52 inherit pub_types_classpcl_1_1_filter_indices"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac15dfea019e277e78911673477404fda inherit pub_types_classpcl_1_1_filter_indices"><td class="memItemLeft" align="right" valign="top"><a id="ac15dfea019e277e78911673477404fda"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1_filter_indices.html">FilterIndices</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Ptr</b></td></tr>
<tr class="separator:ac15dfea019e277e78911673477404fda inherit pub_types_classpcl_1_1_filter_indices"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a243068e6e2c9fbcfecc7154b7cc7606d inherit pub_types_classpcl_1_1_filter_indices"><td class="memItemLeft" align="right" valign="top"><a id="a243068e6e2c9fbcfecc7154b7cc7606d"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1_filter_indices.html">FilterIndices</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstPtr</b></td></tr>
<tr class="separator:a243068e6e2c9fbcfecc7154b7cc7606d inherit pub_types_classpcl_1_1_filter_indices"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classpcl_1_1_filter"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classpcl_1_1_filter')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classpcl_1_1_filter.html">pcl::Filter&lt; PointT &gt;</a></td></tr>
<tr class="memitem:a719a1ef5a8fc3b7f4a651a8bae51571b inherit pub_types_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top"><a id="a719a1ef5a8fc3b7f4a651a8bae51571b"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1_filter.html">Filter</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Ptr</b></td></tr>
<tr class="separator:a719a1ef5a8fc3b7f4a651a8bae51571b inherit pub_types_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a01b992cf70e997979d7f653226a60ddd inherit pub_types_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top"><a id="a01b992cf70e997979d7f653226a60ddd"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1_filter.html">Filter</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>ConstPtr</b></td></tr>
<tr class="separator:a01b992cf70e997979d7f653226a60ddd inherit pub_types_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f1d68bbc5f1f6b852b48b95e4673cfb inherit pub_types_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top"><a id="a4f1d68bbc5f1f6b852b48b95e4673cfb"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloud</b></td></tr>
<tr class="separator:a4f1d68bbc5f1f6b852b48b95e4673cfb inherit pub_types_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a335eb506b145ec1a09acc945b775246d inherit pub_types_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top"><a id="a335eb506b145ec1a09acc945b775246d"></a>
typedef PointCloud::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudPtr</b></td></tr>
<tr class="separator:a335eb506b145ec1a09acc945b775246d inherit pub_types_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5796101c9166820fac3a5ca961bde255 inherit pub_types_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top"><a id="a5796101c9166820fac3a5ca961bde255"></a>
typedef PointCloud::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudConstPtr</b></td></tr>
<tr class="separator:a5796101c9166820fac3a5ca961bde255 inherit pub_types_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_types_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pub_types_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Public 类型 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointT &gt;</a></td></tr>
<tr class="memitem:ae2f6f6863a73337858b7a7a054eaae4f inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ae2f6f6863a73337858b7a7a054eaae4f"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloud</b></td></tr>
<tr class="separator:ae2f6f6863a73337858b7a7a054eaae4f inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab84dd662cda89edb882fe5307b2136ea inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ab84dd662cda89edb882fe5307b2136ea"></a>
typedef PointCloud::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudPtr</b></td></tr>
<tr class="separator:ab84dd662cda89edb882fe5307b2136ea inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac8326513fad0680b6993e2f1a79a6af4 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ac8326513fad0680b6993e2f1a79a6af4"></a>
typedef PointCloud::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>PointCloudConstPtr</b></td></tr>
<tr class="separator:ac8326513fad0680b6993e2f1a79a6af4 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae51eae0c7b3e0b7178f4894dff90660a inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ae51eae0c7b3e0b7178f4894dff90660a"></a>
typedef boost::shared_ptr&lt; <a class="el" href="structpcl_1_1_point_indices.html">PointIndices</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointIndicesPtr</b></td></tr>
<tr class="separator:ae51eae0c7b3e0b7178f4894dff90660a inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a51771056fb4ab8c448a11157acbe2ee0 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a51771056fb4ab8c448a11157acbe2ee0"></a>
typedef boost::shared_ptr&lt; <a class="el" href="structpcl_1_1_point_indices.html">PointIndices</a> const  &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>PointIndicesConstPtr</b></td></tr>
<tr class="separator:a51771056fb4ab8c448a11157acbe2ee0 inherit pub_types_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:a5a3e08593454dc450d55638402bdf9a5"><td class="memItemLeft" align="right" valign="top"><a id="a5a3e08593454dc450d55638402bdf9a5"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_covariance_sampling.html#a5a3e08593454dc450d55638402bdf9a5">CovarianceSampling</a> ()</td></tr>
<tr class="memdesc:a5a3e08593454dc450d55638402bdf9a5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty constructor. <br /></td></tr>
<tr class="separator:a5a3e08593454dc450d55638402bdf9a5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac705c2a818792c53b1a3c64b6eca676d"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_covariance_sampling.html#ac705c2a818792c53b1a3c64b6eca676d">setNumberOfSamples</a> (unsigned int samples)</td></tr>
<tr class="memdesc:ac705c2a818792c53b1a3c64b6eca676d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set number of indices to be sampled.  <a href="classpcl_1_1_covariance_sampling.html#ac705c2a818792c53b1a3c64b6eca676d">更多...</a><br /></td></tr>
<tr class="separator:ac705c2a818792c53b1a3c64b6eca676d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada5284058f054b0e18dcfbbf3b876079"><td class="memItemLeft" align="right" valign="top"><a id="ada5284058f054b0e18dcfbbf3b876079"></a>
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_covariance_sampling.html#ada5284058f054b0e18dcfbbf3b876079">getNumberOfSamples</a> () const</td></tr>
<tr class="memdesc:ada5284058f054b0e18dcfbbf3b876079"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the value of the internal <em>num_samples_</em> parameter. <br /></td></tr>
<tr class="separator:ada5284058f054b0e18dcfbbf3b876079"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77f474e133011e1cff3130c6c3732b78"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_covariance_sampling.html#a77f474e133011e1cff3130c6c3732b78">setNormals</a> (const NormalsConstPtr &amp;normals)</td></tr>
<tr class="memdesc:a77f474e133011e1cff3130c6c3732b78"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the normals computed on the input point cloud  <a href="classpcl_1_1_covariance_sampling.html#a77f474e133011e1cff3130c6c3732b78">更多...</a><br /></td></tr>
<tr class="separator:a77f474e133011e1cff3130c6c3732b78"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aab9deb8cf8f2825c391ec6d87975ba5a"><td class="memItemLeft" align="right" valign="top"><a id="aab9deb8cf8f2825c391ec6d87975ba5a"></a>
NormalsConstPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_covariance_sampling.html#aab9deb8cf8f2825c391ec6d87975ba5a">getNormals</a> () const</td></tr>
<tr class="memdesc:aab9deb8cf8f2825c391ec6d87975ba5a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the normals computed on the input point cloud <br /></td></tr>
<tr class="separator:aab9deb8cf8f2825c391ec6d87975ba5a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a82eac9e85ffed525bb467e3cd58a87e4"><td class="memItemLeft" align="right" valign="top">double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_covariance_sampling.html#a82eac9e85ffed525bb467e3cd58a87e4">computeConditionNumber</a> ()</td></tr>
<tr class="memdesc:a82eac9e85ffed525bb467e3cd58a87e4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute the condition number of the input point cloud. The condition number is the ratio between the largest and smallest eigenvalues of the 6x6 covariance matrix of the cloud. The closer this number is to 1.0, the more stable the cloud is for ICP registration.  <a href="classpcl_1_1_covariance_sampling.html#a82eac9e85ffed525bb467e3cd58a87e4">更多...</a><br /></td></tr>
<tr class="separator:a82eac9e85ffed525bb467e3cd58a87e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab2210a7ae6ce3f6bf71e13ee3cf9249b"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_covariance_sampling.html#ab2210a7ae6ce3f6bf71e13ee3cf9249b">computeCovarianceMatrix</a> (Eigen::Matrix&lt; double, 6, 6 &gt; &amp;covariance_matrix)</td></tr>
<tr class="memdesc:ab2210a7ae6ce3f6bf71e13ee3cf9249b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the covariance matrix of the input cloud.  <a href="classpcl_1_1_covariance_sampling.html#ab2210a7ae6ce3f6bf71e13ee3cf9249b">更多...</a><br /></td></tr>
<tr class="separator:ab2210a7ae6ce3f6bf71e13ee3cf9249b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1_filter_indices"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1_filter_indices')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1_filter_indices.html">pcl::FilterIndices&lt; PointT &gt;</a></td></tr>
<tr class="memitem:a72c8696f1bc2e4a6e92172371a45d592 inherit pub_methods_classpcl_1_1_filter_indices"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter_indices.html#a72c8696f1bc2e4a6e92172371a45d592">FilterIndices</a> (bool extract_removed_indices=false)</td></tr>
<tr class="memdesc:a72c8696f1bc2e4a6e92172371a45d592 inherit pub_methods_classpcl_1_1_filter_indices"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="classpcl_1_1_filter_indices.html#a72c8696f1bc2e4a6e92172371a45d592">更多...</a><br /></td></tr>
<tr class="separator:a72c8696f1bc2e4a6e92172371a45d592 inherit pub_methods_classpcl_1_1_filter_indices"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad2713c94212077eed36018718a6a11f2 inherit pub_methods_classpcl_1_1_filter_indices"><td class="memItemLeft" align="right" valign="top"><a id="ad2713c94212077eed36018718a6a11f2"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter_indices.html#ad2713c94212077eed36018718a6a11f2">~FilterIndices</a> ()</td></tr>
<tr class="memdesc:ad2713c94212077eed36018718a6a11f2 inherit pub_methods_classpcl_1_1_filter_indices"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty virtual destructor. <br /></td></tr>
<tr class="separator:ad2713c94212077eed36018718a6a11f2 inherit pub_methods_classpcl_1_1_filter_indices"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a007e834bf929cb9da0aabb17036bff31 inherit pub_methods_classpcl_1_1_filter_indices"><td class="memItemLeft" align="right" valign="top"><a id="a007e834bf929cb9da0aabb17036bff31"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>filter</b> (<a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;output)</td></tr>
<tr class="separator:a007e834bf929cb9da0aabb17036bff31 inherit pub_methods_classpcl_1_1_filter_indices"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abbbfa3686df4bdb6cd333a182180970d inherit pub_methods_classpcl_1_1_filter_indices"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter_indices.html#abbbfa3686df4bdb6cd333a182180970d">filter</a> (std::vector&lt; int &gt; &amp;indices)</td></tr>
<tr class="memdesc:abbbfa3686df4bdb6cd333a182180970d inherit pub_methods_classpcl_1_1_filter_indices"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calls the filtering method and returns the filtered point cloud indices.  <a href="classpcl_1_1_filter_indices.html#abbbfa3686df4bdb6cd333a182180970d">更多...</a><br /></td></tr>
<tr class="separator:abbbfa3686df4bdb6cd333a182180970d inherit pub_methods_classpcl_1_1_filter_indices"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8da0b86892188e59b0deb8d420a682bb inherit pub_methods_classpcl_1_1_filter_indices"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter_indices.html#a8da0b86892188e59b0deb8d420a682bb">setNegative</a> (bool negative)</td></tr>
<tr class="memdesc:a8da0b86892188e59b0deb8d420a682bb inherit pub_methods_classpcl_1_1_filter_indices"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set whether the regular conditions for points filtering should apply, or the inverted conditions.  <a href="classpcl_1_1_filter_indices.html#a8da0b86892188e59b0deb8d420a682bb">更多...</a><br /></td></tr>
<tr class="separator:a8da0b86892188e59b0deb8d420a682bb inherit pub_methods_classpcl_1_1_filter_indices"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae596b8085f72489035f63aa26904f2b3 inherit pub_methods_classpcl_1_1_filter_indices"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter_indices.html#ae596b8085f72489035f63aa26904f2b3">getNegative</a> ()</td></tr>
<tr class="memdesc:ae596b8085f72489035f63aa26904f2b3 inherit pub_methods_classpcl_1_1_filter_indices"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get whether the regular conditions for points filtering should apply, or the inverted conditions.  <a href="classpcl_1_1_filter_indices.html#ae596b8085f72489035f63aa26904f2b3">更多...</a><br /></td></tr>
<tr class="separator:ae596b8085f72489035f63aa26904f2b3 inherit pub_methods_classpcl_1_1_filter_indices"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a21eb00357056c0cc432cd03afa84d08c inherit pub_methods_classpcl_1_1_filter_indices"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter_indices.html#a21eb00357056c0cc432cd03afa84d08c">setKeepOrganized</a> (bool keep_organized)</td></tr>
<tr class="memdesc:a21eb00357056c0cc432cd03afa84d08c inherit pub_methods_classpcl_1_1_filter_indices"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set whether the filtered points should be kept and set to the value given through <em>setUserFilterValue</em> (default: NaN), or removed from the <a class="el" href="classpcl_1_1_point_cloud.html" title="PointCloud represents the base class in PCL for storing collections of 3D points.">PointCloud</a>, thus potentially breaking its organized structure.  <a href="classpcl_1_1_filter_indices.html#a21eb00357056c0cc432cd03afa84d08c">更多...</a><br /></td></tr>
<tr class="separator:a21eb00357056c0cc432cd03afa84d08c inherit pub_methods_classpcl_1_1_filter_indices"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9448e925e369d96824a1b333903ddfe2 inherit pub_methods_classpcl_1_1_filter_indices"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter_indices.html#a9448e925e369d96824a1b333903ddfe2">getKeepOrganized</a> ()</td></tr>
<tr class="memdesc:a9448e925e369d96824a1b333903ddfe2 inherit pub_methods_classpcl_1_1_filter_indices"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get whether the filtered points should be kept and set to the value given through <em>setUserFilterValue</em> (default = NaN), or removed from the <a class="el" href="classpcl_1_1_point_cloud.html" title="PointCloud represents the base class in PCL for storing collections of 3D points.">PointCloud</a>, thus potentially breaking its organized structure.  <a href="classpcl_1_1_filter_indices.html#a9448e925e369d96824a1b333903ddfe2">更多...</a><br /></td></tr>
<tr class="separator:a9448e925e369d96824a1b333903ddfe2 inherit pub_methods_classpcl_1_1_filter_indices"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9456a457b18c28b8dd6b07e970c16eba inherit pub_methods_classpcl_1_1_filter_indices"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter_indices.html#a9456a457b18c28b8dd6b07e970c16eba">setUserFilterValue</a> (float value)</td></tr>
<tr class="memdesc:a9456a457b18c28b8dd6b07e970c16eba inherit pub_methods_classpcl_1_1_filter_indices"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a value that the filtered points should be set to instead of removing them. Used in conjunction with <em>setKeepOrganized</em> ().  <a href="classpcl_1_1_filter_indices.html#a9456a457b18c28b8dd6b07e970c16eba">更多...</a><br /></td></tr>
<tr class="separator:a9456a457b18c28b8dd6b07e970c16eba inherit pub_methods_classpcl_1_1_filter_indices"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1_filter"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1_filter')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1_filter.html">pcl::Filter&lt; PointT &gt;</a></td></tr>
<tr class="memitem:af31e766a9092a766962f42005c1b84a4 inherit pub_methods_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter.html#af31e766a9092a766962f42005c1b84a4">Filter</a> (bool extract_removed_indices=false)</td></tr>
<tr class="memdesc:af31e766a9092a766962f42005c1b84a4 inherit pub_methods_classpcl_1_1_filter"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty constructor.  <a href="classpcl_1_1_filter.html#af31e766a9092a766962f42005c1b84a4">更多...</a><br /></td></tr>
<tr class="separator:af31e766a9092a766962f42005c1b84a4 inherit pub_methods_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11163e4d01519df900e6144f705f6980 inherit pub_methods_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top"><a id="a11163e4d01519df900e6144f705f6980"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter.html#a11163e4d01519df900e6144f705f6980">~Filter</a> ()</td></tr>
<tr class="memdesc:a11163e4d01519df900e6144f705f6980 inherit pub_methods_classpcl_1_1_filter"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty destructor <br /></td></tr>
<tr class="separator:a11163e4d01519df900e6144f705f6980 inherit pub_methods_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae451ce8a0981e8589812d4f3b135a335 inherit pub_methods_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top"><a id="ae451ce8a0981e8589812d4f3b135a335"></a>
IndicesConstPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter.html#ae451ce8a0981e8589812d4f3b135a335">getRemovedIndices</a> ()</td></tr>
<tr class="memdesc:ae451ce8a0981e8589812d4f3b135a335 inherit pub_methods_classpcl_1_1_filter"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the point indices being removed <br /></td></tr>
<tr class="separator:ae451ce8a0981e8589812d4f3b135a335 inherit pub_methods_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add67775d121c2dd536d3306ef447431e inherit pub_methods_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter.html#add67775d121c2dd536d3306ef447431e">getRemovedIndices</a> (<a class="el" href="structpcl_1_1_point_indices.html">PointIndices</a> &amp;pi)</td></tr>
<tr class="memdesc:add67775d121c2dd536d3306ef447431e inherit pub_methods_classpcl_1_1_filter"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the point indices being removed  <a href="classpcl_1_1_filter.html#add67775d121c2dd536d3306ef447431e">更多...</a><br /></td></tr>
<tr class="separator:add67775d121c2dd536d3306ef447431e inherit pub_methods_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a17115897ca28f6b12950d023958aa641 inherit pub_methods_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter.html#a17115897ca28f6b12950d023958aa641">filter</a> (<a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a> &amp;output)</td></tr>
<tr class="memdesc:a17115897ca28f6b12950d023958aa641 inherit pub_methods_classpcl_1_1_filter"><td class="mdescLeft">&#160;</td><td class="mdescRight">Calls the filtering method and returns the filtered dataset in output.  <a href="classpcl_1_1_filter.html#a17115897ca28f6b12950d023958aa641">更多...</a><br /></td></tr>
<tr class="separator:a17115897ca28f6b12950d023958aa641 inherit pub_methods_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Public 成员函数 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointT &gt;</a></td></tr>
<tr class="memitem:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="af4fbc5eb005057f8a0fc6d60bde595df"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#af4fbc5eb005057f8a0fc6d60bde595df">PCLBase</a> ()</td></tr>
<tr class="memdesc:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Empty constructor. <br /></td></tr>
<tr class="separator:af4fbc5eb005057f8a0fc6d60bde595df inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a7a6dd7a91275d7737cf1b18005b47244"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a7a6dd7a91275d7737cf1b18005b47244">PCLBase</a> (const <a class="el" href="classpcl_1_1_p_c_l_base.html">PCLBase</a> &amp;base)</td></tr>
<tr class="memdesc:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor. <br /></td></tr>
<tr class="separator:a7a6dd7a91275d7737cf1b18005b47244 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ad5d6846e98e59c37dcc3dc9958d53966"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#ad5d6846e98e59c37dcc3dc9958d53966">~PCLBase</a> ()</td></tr>
<tr class="memdesc:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:ad5d6846e98e59c37dcc3dc9958d53966 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1952d7101f3942bac3b69ed55c1ca7ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a1952d7101f3942bac3b69ed55c1ca7ea">setInputCloud</a> (const PointCloudConstPtr &amp;cloud)</td></tr>
<tr class="memdesc:a1952d7101f3942bac3b69ed55c1ca7ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the input dataset  <a href="classpcl_1_1_p_c_l_base.html#a1952d7101f3942bac3b69ed55c1ca7ea">更多...</a><br /></td></tr>
<tr class="separator:a1952d7101f3942bac3b69ed55c1ca7ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a8cd745c4f7a792212f4fc3720b9d46ea"></a>
PointCloudConstPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a8cd745c4f7a792212f4fc3720b9d46ea">getInputCloud</a> () const</td></tr>
<tr class="memdesc:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the input point cloud dataset. <br /></td></tr>
<tr class="separator:a8cd745c4f7a792212f4fc3720b9d46ea inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab219359de6eb34c9d51e2e976dd1a0d1 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#ab219359de6eb34c9d51e2e976dd1a0d1">setIndices</a> (const IndicesPtr &amp;indices)</td></tr>
<tr class="memdesc:ab219359de6eb34c9d51e2e976dd1a0d1 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_l_base.html#ab219359de6eb34c9d51e2e976dd1a0d1">更多...</a><br /></td></tr>
<tr class="separator:ab219359de6eb34c9d51e2e976dd1a0d1 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a436c68c74b31e4dd00000adfbb11ca7c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a436c68c74b31e4dd00000adfbb11ca7c">setIndices</a> (const IndicesConstPtr &amp;indices)</td></tr>
<tr class="memdesc:a436c68c74b31e4dd00000adfbb11ca7c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_l_base.html#a436c68c74b31e4dd00000adfbb11ca7c">更多...</a><br /></td></tr>
<tr class="separator:a436c68c74b31e4dd00000adfbb11ca7c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9cc90d8364ce968566f75800d3773ca inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#af9cc90d8364ce968566f75800d3773ca">setIndices</a> (const PointIndicesConstPtr &amp;indices)</td></tr>
<tr class="memdesc:af9cc90d8364ce968566f75800d3773ca inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provide a pointer to the vector of indices that represents the input data.  <a href="classpcl_1_1_p_c_l_base.html#af9cc90d8364ce968566f75800d3773ca">更多...</a><br /></td></tr>
<tr class="separator:af9cc90d8364ce968566f75800d3773ca inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a930c7a6375fdf65ff8cfdb4eb4a6d996 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a930c7a6375fdf65ff8cfdb4eb4a6d996">setIndices</a> (size_t row_start, size_t col_start, size_t nb_rows, size_t nb_cols)</td></tr>
<tr class="memdesc:a930c7a6375fdf65ff8cfdb4eb4a6d996 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the indices for the points laying within an interest region of the point cloud.  <a href="classpcl_1_1_p_c_l_base.html#a930c7a6375fdf65ff8cfdb4eb4a6d996">更多...</a><br /></td></tr>
<tr class="separator:a930c7a6375fdf65ff8cfdb4eb4a6d996 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a058753dd4de73d3d0062fe2e452fba3c"></a>
IndicesPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a058753dd4de73d3d0062fe2e452fba3c">getIndices</a> ()</td></tr>
<tr class="memdesc:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the vector of indices used. <br /></td></tr>
<tr class="separator:a058753dd4de73d3d0062fe2e452fba3c inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="acae187b37230758959572ceb1e6e2045"></a>
IndicesConstPtr const&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#acae187b37230758959572ceb1e6e2045">getIndices</a> () const</td></tr>
<tr class="memdesc:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a pointer to the vector of indices used. <br /></td></tr>
<tr class="separator:acae187b37230758959572ceb1e6e2045 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#af7335fedb0af0930b9d1dedcb54ba201">operator[]</a> (size_t pos) const</td></tr>
<tr class="memdesc:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Override <a class="el" href="classpcl_1_1_point_cloud.html" title="PointCloud represents the base class in PCL for storing collections of 3D points.">PointCloud</a> operator[] to shorten code  <a href="classpcl_1_1_p_c_l_base.html#af7335fedb0af0930b9d1dedcb54ba201">更多...</a><br /></td></tr>
<tr class="separator:af7335fedb0af0930b9d1dedcb54ba201 inherit pub_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
静态 Public 成员函数</h2></td></tr>
<tr class="memitem:a8f2b37a9be66d9745201d5cb1fa36774"><td class="memItemLeft" align="right" valign="top">static double&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_covariance_sampling.html#a8f2b37a9be66d9745201d5cb1fa36774">computeConditionNumber</a> (const Eigen::Matrix&lt; double, 6, 6 &gt; &amp;covariance_matrix)</td></tr>
<tr class="memdesc:a8f2b37a9be66d9745201d5cb1fa36774"><td class="mdescLeft">&#160;</td><td class="mdescRight">Compute the condition number of the input point cloud. The condition number is the ratio between the largest and smallest eigenvalues of the 6x6 covariance matrix of the cloud. The closer this number is to 1.0, the more stable the cloud is for ICP registration.  <a href="classpcl_1_1_covariance_sampling.html#a8f2b37a9be66d9745201d5cb1fa36774">更多...</a><br /></td></tr>
<tr class="separator:a8f2b37a9be66d9745201d5cb1fa36774"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected 成员函数</h2></td></tr>
<tr class="memitem:a96c690d493e6114a22621233bb784e0e"><td class="memItemLeft" align="right" valign="top"><a id="a96c690d493e6114a22621233bb784e0e"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>initCompute</b> ()</td></tr>
<tr class="separator:a96c690d493e6114a22621233bb784e0e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d073302aaf53592ebaad290041162c4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_covariance_sampling.html#a7d073302aaf53592ebaad290041162c4">applyFilter</a> (<a class="el" href="classpcl_1_1_point_cloud.html">Cloud</a> &amp;output)</td></tr>
<tr class="memdesc:a7d073302aaf53592ebaad290041162c4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sample of point indices into a separate <a class="el" href="classpcl_1_1_point_cloud.html" title="PointCloud represents the base class in PCL for storing collections of 3D points.">PointCloud</a>  <a href="classpcl_1_1_covariance_sampling.html#a7d073302aaf53592ebaad290041162c4">更多...</a><br /></td></tr>
<tr class="separator:a7d073302aaf53592ebaad290041162c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2731ee72e45ed3e80f0580cd2eab9096"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_covariance_sampling.html#a2731ee72e45ed3e80f0580cd2eab9096">applyFilter</a> (std::vector&lt; int &gt; &amp;indices)</td></tr>
<tr class="memdesc:a2731ee72e45ed3e80f0580cd2eab9096"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sample of point indices  <a href="classpcl_1_1_covariance_sampling.html#a2731ee72e45ed3e80f0580cd2eab9096">更多...</a><br /></td></tr>
<tr class="separator:a2731ee72e45ed3e80f0580cd2eab9096"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classpcl_1_1_filter"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classpcl_1_1_filter')"><img src="closed.png" alt="-"/>&#160;Protected 成员函数 继承自 <a class="el" href="classpcl_1_1_filter.html">pcl::Filter&lt; PointT &gt;</a></td></tr>
<tr class="memitem:a71040236d2c11da75b715d6d6bf5ba9d inherit pro_methods_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top"><a id="a71040236d2c11da75b715d6d6bf5ba9d"></a>
const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter.html#a71040236d2c11da75b715d6d6bf5ba9d">getClassName</a> () const</td></tr>
<tr class="memdesc:a71040236d2c11da75b715d6d6bf5ba9d inherit pro_methods_classpcl_1_1_filter"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get a string representation of the name of this class. <br /></td></tr>
<tr class="separator:a71040236d2c11da75b715d6d6bf5ba9d inherit pro_methods_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_methods_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Protected 成员函数 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointT &gt;</a></td></tr>
<tr class="memitem:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#acceb20854934f4cf77e266eb5a44d4f0">initCompute</a> ()</td></tr>
<tr class="memdesc:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method should get called before starting the actual computation.  <a href="classpcl_1_1_p_c_l_base.html#acceb20854934f4cf77e266eb5a44d4f0">更多...</a><br /></td></tr>
<tr class="separator:acceb20854934f4cf77e266eb5a44d4f0 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="afc426c4eebb94b7734d4fa556bff1420"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#afc426c4eebb94b7734d4fa556bff1420">deinitCompute</a> ()</td></tr>
<tr class="memdesc:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method should get called after finishing the actual computation. <br /></td></tr>
<tr class="separator:afc426c4eebb94b7734d4fa556bff1420 inherit pro_methods_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-methods"></a>
静态 Protected 成员函数</h2></td></tr>
<tr class="memitem:ad3704f3ded27de1bd5532559423e9ed8"><td class="memItemLeft" align="right" valign="top"><a id="ad3704f3ded27de1bd5532559423e9ed8"></a>
static bool&#160;</td><td class="memItemRight" valign="bottom"><b>sort_dot_list_function</b> (std::pair&lt; int, double &gt; a, std::pair&lt; int, double &gt; b)</td></tr>
<tr class="separator:ad3704f3ded27de1bd5532559423e9ed8"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected 属性</h2></td></tr>
<tr class="memitem:ad5e2ddf8d42b6a47fbf16398eff29833"><td class="memItemLeft" align="right" valign="top"><a id="ad5e2ddf8d42b6a47fbf16398eff29833"></a>
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_covariance_sampling.html#ad5e2ddf8d42b6a47fbf16398eff29833">num_samples_</a></td></tr>
<tr class="memdesc:ad5e2ddf8d42b6a47fbf16398eff29833"><td class="mdescLeft">&#160;</td><td class="mdescRight">Number of indices that will be returned. <br /></td></tr>
<tr class="separator:ad5e2ddf8d42b6a47fbf16398eff29833"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a498a76c8589afc1a508f4daada7ab64d"><td class="memItemLeft" align="right" valign="top"><a id="a498a76c8589afc1a508f4daada7ab64d"></a>
NormalsConstPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_covariance_sampling.html#a498a76c8589afc1a508f4daada7ab64d">input_normals_</a></td></tr>
<tr class="memdesc:a498a76c8589afc1a508f4daada7ab64d"><td class="mdescLeft">&#160;</td><td class="mdescRight">The normals computed at each point in the input cloud <br /></td></tr>
<tr class="separator:a498a76c8589afc1a508f4daada7ab64d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4360c7c6a4f126663b5b43b0e6416e5"><td class="memItemLeft" align="right" valign="top"><a id="ab4360c7c6a4f126663b5b43b0e6416e5"></a>
std::vector&lt; Eigen::Vector3f, Eigen::aligned_allocator&lt; Eigen::Vector3f &gt; &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>scaled_points_</b></td></tr>
<tr class="separator:ab4360c7c6a4f126663b5b43b0e6416e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classpcl_1_1_filter_indices"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpcl_1_1_filter_indices')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classpcl_1_1_filter_indices.html">pcl::FilterIndices&lt; PointT &gt;</a></td></tr>
<tr class="memitem:a97854d723ea58d2aa7706db0d086a90f inherit pro_attribs_classpcl_1_1_filter_indices"><td class="memItemLeft" align="right" valign="top"><a id="a97854d723ea58d2aa7706db0d086a90f"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter_indices.html#a97854d723ea58d2aa7706db0d086a90f">negative_</a></td></tr>
<tr class="memdesc:a97854d723ea58d2aa7706db0d086a90f inherit pro_attribs_classpcl_1_1_filter_indices"><td class="mdescLeft">&#160;</td><td class="mdescRight">False = normal filter behavior (default), true = inverted behavior. <br /></td></tr>
<tr class="separator:a97854d723ea58d2aa7706db0d086a90f inherit pro_attribs_classpcl_1_1_filter_indices"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a45e39a4237dfff1735294cacc243a918 inherit pro_attribs_classpcl_1_1_filter_indices"><td class="memItemLeft" align="right" valign="top"><a id="a45e39a4237dfff1735294cacc243a918"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter_indices.html#a45e39a4237dfff1735294cacc243a918">keep_organized_</a></td></tr>
<tr class="memdesc:a45e39a4237dfff1735294cacc243a918 inherit pro_attribs_classpcl_1_1_filter_indices"><td class="mdescLeft">&#160;</td><td class="mdescRight">False = remove points (default), true = redefine points, keep structure. <br /></td></tr>
<tr class="separator:a45e39a4237dfff1735294cacc243a918 inherit pro_attribs_classpcl_1_1_filter_indices"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a009090d4cb34cb01d5906b3d7e12c5db inherit pro_attribs_classpcl_1_1_filter_indices"><td class="memItemLeft" align="right" valign="top"><a id="a009090d4cb34cb01d5906b3d7e12c5db"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter_indices.html#a009090d4cb34cb01d5906b3d7e12c5db">user_filter_value_</a></td></tr>
<tr class="memdesc:a009090d4cb34cb01d5906b3d7e12c5db inherit pro_attribs_classpcl_1_1_filter_indices"><td class="mdescLeft">&#160;</td><td class="mdescRight">The user given value that the filtered point dimensions should be set to (default = NaN). <br /></td></tr>
<tr class="separator:a009090d4cb34cb01d5906b3d7e12c5db inherit pro_attribs_classpcl_1_1_filter_indices"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classpcl_1_1_filter"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpcl_1_1_filter')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classpcl_1_1_filter.html">pcl::Filter&lt; PointT &gt;</a></td></tr>
<tr class="memitem:ae83ccb695ed263cfc64c224210a31936 inherit pro_attribs_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top"><a id="ae83ccb695ed263cfc64c224210a31936"></a>
IndicesPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter.html#ae83ccb695ed263cfc64c224210a31936">removed_indices_</a></td></tr>
<tr class="memdesc:ae83ccb695ed263cfc64c224210a31936 inherit pro_attribs_classpcl_1_1_filter"><td class="mdescLeft">&#160;</td><td class="mdescRight">Indices of the points that are removed <br /></td></tr>
<tr class="separator:ae83ccb695ed263cfc64c224210a31936 inherit pro_attribs_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad700c7ab56dc82ad8811b87e9f793751 inherit pro_attribs_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top"><a id="ad700c7ab56dc82ad8811b87e9f793751"></a>
std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter.html#ad700c7ab56dc82ad8811b87e9f793751">filter_name_</a></td></tr>
<tr class="memdesc:ad700c7ab56dc82ad8811b87e9f793751 inherit pro_attribs_classpcl_1_1_filter"><td class="mdescLeft">&#160;</td><td class="mdescRight">The filter name. <br /></td></tr>
<tr class="separator:ad700c7ab56dc82ad8811b87e9f793751 inherit pro_attribs_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77b899631add791703f5d615f085bede inherit pro_attribs_classpcl_1_1_filter"><td class="memItemLeft" align="right" valign="top"><a id="a77b899631add791703f5d615f085bede"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_filter.html#a77b899631add791703f5d615f085bede">extract_removed_indices_</a></td></tr>
<tr class="memdesc:a77b899631add791703f5d615f085bede inherit pro_attribs_classpcl_1_1_filter"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set to true if we want to return the indices of the removed points. <br /></td></tr>
<tr class="separator:a77b899631add791703f5d615f085bede inherit pro_attribs_classpcl_1_1_filter"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classpcl_1_1_p_c_l_base"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpcl_1_1_p_c_l_base')"><img src="closed.png" alt="-"/>&#160;Protected 属性 继承自 <a class="el" href="classpcl_1_1_p_c_l_base.html">pcl::PCLBase&lt; PointT &gt;</a></td></tr>
<tr class="memitem:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="a09c70d8e06e3fb4f07903fe6f8d67869"></a>
PointCloudConstPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a></td></tr>
<tr class="memdesc:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">The input point cloud dataset. <br /></td></tr>
<tr class="separator:a09c70d8e06e3fb4f07903fe6f8d67869 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="aaee847c8a517ebf365bad2cb182a6626"></a>
IndicesPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a></td></tr>
<tr class="memdesc:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">A pointer to the vector of point indices to use. <br /></td></tr>
<tr class="separator:aaee847c8a517ebf365bad2cb182a6626 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="ada1eadb824d34ca9206a86343d9760bb"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#ada1eadb824d34ca9206a86343d9760bb">use_indices_</a></td></tr>
<tr class="memdesc:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set to true if point indices are used. <br /></td></tr>
<tr class="separator:ada1eadb824d34ca9206a86343d9760bb inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memItemLeft" align="right" valign="top"><a id="adadb0299f144528020ed558af6879662"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1_p_c_l_base.html#adadb0299f144528020ed558af6879662">fake_indices_</a></td></tr>
<tr class="memdesc:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="mdescLeft">&#160;</td><td class="mdescRight">If no set of indices are given, we construct a set of fake indices that mimic the input <a class="el" href="classpcl_1_1_point_cloud.html" title="PointCloud represents the base class in PCL for storing collections of 3D points.">PointCloud</a>. <br /></td></tr>
<tr class="separator:adadb0299f144528020ed558af6879662 inherit pro_attribs_classpcl_1_1_p_c_l_base"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-types"></a>
Private 类型</h2></td></tr>
<tr class="memitem:aaa9b9ab1e5c04361ebf2f49d0aaecc90"><td class="memItemLeft" align="right" valign="top"><a id="aaa9b9ab1e5c04361ebf2f49d0aaecc90"></a>
typedef <a class="el" href="classpcl_1_1_filter_indices.html">FilterIndices</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a> &gt;::<a class="el" href="classpcl_1_1_point_cloud.html">PointCloud</a>&#160;</td><td class="memItemRight" valign="bottom"><b>Cloud</b></td></tr>
<tr class="separator:aaa9b9ab1e5c04361ebf2f49d0aaecc90"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a751c74e6d2055e2705b318e8bf1ebe4d"><td class="memItemLeft" align="right" valign="top"><a id="a751c74e6d2055e2705b318e8bf1ebe4d"></a>
typedef Cloud::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>CloudPtr</b></td></tr>
<tr class="separator:a751c74e6d2055e2705b318e8bf1ebe4d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76f0454b24cd096aeb0430c7484fd2ea"><td class="memItemLeft" align="right" valign="top"><a id="a76f0454b24cd096aeb0430c7484fd2ea"></a>
typedef Cloud::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>CloudConstPtr</b></td></tr>
<tr class="separator:a76f0454b24cd096aeb0430c7484fd2ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab023252cf5320f19d059be102ec569de"><td class="memItemLeft" align="right" valign="top"><a id="ab023252cf5320f19d059be102ec569de"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; PointNT &gt;::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>NormalsConstPtr</b></td></tr>
<tr class="separator:ab023252cf5320f19d059be102ec569de"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><h3>template&lt;typename PointT, typename PointNT&gt;<br />
class pcl::CovarianceSampling&lt; PointT, PointNT &gt;</h3>

<p>Point <a class="el" href="class_cloud.html" title="A wrapper which allows to use any implementation of cloud provided by a third-party library.">Cloud</a> sampling based on the 6D covariances. It selects the points such that the resulting cloud is as stable as possible for being registered (against a copy of itself) with ICP. The algorithm adds points to the resulting cloud incrementally, while trying to keep all the 6 eigenvalues of the covariance matrix as close to each other as possible. This class also comes with the <em>computeConditionNumber</em> method that returns a number which shows how stable a point cloud will be when used as input for ICP (the closer the value it is to 1.0, the better). </p>
<p>Based on the following publication:</p><ul>
<li>"Geometrically Stable Sampling for the ICP Algorithm" - N. Gelfand, L. Ikemoto, S. Rusinkiewicz, M. Levoy</li>
</ul>
<dl class="section author"><dt>作者</dt><dd>Alexandru E. Ichim, <a href="#" onclick="location.href='mai'+'lto:'+'ale'+'x.'+'e.i'+'ch'+'im@'+'gm'+'ail'+'.c'+'om'; return false;">alex.<span style="display: none;">.nosp@m.</span>e.ic<span style="display: none;">.nosp@m.</span>him@g<span style="display: none;">.nosp@m.</span>mail<span style="display: none;">.nosp@m.</span>.com</a> </dd></dl>
</div><h2 class="groupheader">成员函数说明</h2>
<a id="a7d073302aaf53592ebaad290041162c4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7d073302aaf53592ebaad290041162c4">&#9670;&nbsp;</a></span>applyFilter() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename PointNT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_covariance_sampling.html">pcl::CovarianceSampling</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, PointNT &gt;::applyFilter </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classpcl_1_1_point_cloud.html">Cloud</a> &amp;&#160;</td>
          <td class="paramname"><em>output</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Sample of point indices into a separate <a class="el" href="classpcl_1_1_point_cloud.html" title="PointCloud represents the base class in PCL for storing collections of 3D points.">PointCloud</a> </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">output</td><td>the resultant point cloud </td></tr>
  </table>
  </dd>
</dl>

<p>实现了 <a class="el" href="classpcl_1_1_filter_indices.html#afd98aa5b5e30e42d81ede249aada8fc9">pcl::FilterIndices&lt; PointT &gt;</a>.</p>
<div class="fragment"><div class="line"><a name="l00260"></a><span class="lineno">  260</span>&#160;{</div>
<div class="line"><a name="l00261"></a><span class="lineno">  261</span>&#160;  std::vector&lt;int&gt; sampled_indices;</div>
<div class="line"><a name="l00262"></a><span class="lineno">  262</span>&#160;  <a class="code" href="classpcl_1_1_covariance_sampling.html#a7d073302aaf53592ebaad290041162c4">applyFilter</a> (sampled_indices);</div>
<div class="line"><a name="l00263"></a><span class="lineno">  263</span>&#160; </div>
<div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;  output.<a class="code" href="class_cloud.html#af6796023a1410f634a5f45c84018bfff">resize</a> (sampled_indices.size ());</div>
<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;  output.header = <a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>-&gt;header;</div>
<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;  output.height = 1;</div>
<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;  output.width = uint32_t (output.<a class="code" href="class_cloud.html#a1be0c0345faefbbab6e9a885ae055ce7">size</a> ());</div>
<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;  output.is_dense = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; sampled_indices.size (); ++i)</div>
<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;    output[i] = (*<a class="code" href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">input_</a>)[sampled_indices[i]];</div>
<div class="line"><a name="l00271"></a><span class="lineno">  271</span>&#160;}</div>
<div class="ttc" id="aclass_cloud_html_a1be0c0345faefbbab6e9a885ae055ce7"><div class="ttname"><a href="class_cloud.html#a1be0c0345faefbbab6e9a885ae055ce7">Cloud::size</a></div><div class="ttdeci">unsigned int size() const</div><div class="ttdoc">Gets the size of the cloud</div><div class="ttdef"><b>Definition:</b> cloud.h:299</div></div>
<div class="ttc" id="aclass_cloud_html_af6796023a1410f634a5f45c84018bfff"><div class="ttname"><a href="class_cloud.html#af6796023a1410f634a5f45c84018bfff">Cloud::resize</a></div><div class="ttdeci">void resize(unsigned int new_size)</div><div class="ttdoc">Sets the size of the cloud of this object to the passed new size</div></div>
<div class="ttc" id="aclasspcl_1_1_covariance_sampling_html_a7d073302aaf53592ebaad290041162c4"><div class="ttname"><a href="classpcl_1_1_covariance_sampling.html#a7d073302aaf53592ebaad290041162c4">pcl::CovarianceSampling::applyFilter</a></div><div class="ttdeci">void applyFilter(Cloud &amp;output)</div><div class="ttdoc">Sample of point indices into a separate PointCloud</div><div class="ttdef"><b>Definition:</b> covariance_sampling.hpp:259</div></div>
<div class="ttc" id="aclasspcl_1_1_p_c_l_base_html_a09c70d8e06e3fb4f07903fe6f8d67869"><div class="ttname"><a href="classpcl_1_1_p_c_l_base.html#a09c70d8e06e3fb4f07903fe6f8d67869">pcl::PCLBase::input_</a></div><div class="ttdeci">PointCloudConstPtr input_</div><div class="ttdoc">The input point cloud dataset.</div><div class="ttdef"><b>Definition:</b> pcl_base.h:150</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a2731ee72e45ed3e80f0580cd2eab9096"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2731ee72e45ed3e80f0580cd2eab9096">&#9670;&nbsp;</a></span>applyFilter() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename PointNT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_covariance_sampling.html">pcl::CovarianceSampling</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, PointNT &gt;::applyFilter </td>
          <td>(</td>
          <td class="paramtype">std::vector&lt; int &gt; &amp;&#160;</td>
          <td class="paramname"><em>indices</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Sample of point indices </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">indices</td><td>the resultant point cloud indices </td></tr>
  </table>
  </dd>
</dl>
<p>TODO figure out how to fill the candidate_indices - see subsequent paper paragraphs</p>

<p>实现了 <a class="el" href="classpcl_1_1_filter_indices.html#a96adbc8e3d7a076cc00a938260160466">pcl::FilterIndices&lt; PointT &gt;</a>.</p>
<div class="fragment"><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;{</div>
<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;  <span class="keywordflow">if</span> (!initCompute ())</div>
<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;    <span class="keywordflow">return</span>;</div>
<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160; </div>
<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;  <span class="comment">//--- Part A from the paper</span></div>
<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;  <span class="comment">// Set up matrix F</span></div>
<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;  Eigen::Matrix&lt;double, 6, Eigen::Dynamic&gt; f_mat = Eigen::Matrix&lt;double, 6, Eigen::Dynamic&gt; (6, <a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;size ());</div>
<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> p_i = 0; p_i &lt; scaled_points_.size (); ++p_i)</div>
<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;  {</div>
<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;    f_mat.block&lt;3, 1&gt; (0, p_i) = scaled_points_[p_i].cross (</div>
<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;                                     (*<a class="code" href="classpcl_1_1_covariance_sampling.html#a498a76c8589afc1a508f4daada7ab64d">input_normals_</a>)[(*indices_)[p_i]].getNormalVector3fMap ()).<span class="keyword">template</span> cast&lt;double&gt; ();</div>
<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;    f_mat.block&lt;3, 1&gt; (3, p_i) = (*<a class="code" href="classpcl_1_1_covariance_sampling.html#a498a76c8589afc1a508f4daada7ab64d">input_normals_</a>)[(*indices_)[p_i]].getNormalVector3fMap ().template cast&lt;double&gt; ();</div>
<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;  }</div>
<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160; </div>
<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;  <span class="comment">// Compute the covariance matrix C and its 6 eigenvectors (initially complex, move them to a double matrix)</span></div>
<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;  Eigen::Matrix&lt;double, 6, 6&gt; c_mat (f_mat * f_mat.transpose ());</div>
<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160; </div>
<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;  Eigen::EigenSolver&lt;Eigen::Matrix&lt;double, 6, 6&gt; &gt; eigen_solver;</div>
<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;  eigen_solver.compute (c_mat, <span class="keyword">true</span>);</div>
<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;  Eigen::MatrixXcd complex_eigenvectors = eigen_solver.eigenvectors ();</div>
<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160; </div>
<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;  Eigen::Matrix&lt;double, 6, 6&gt; x;</div>
<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; 6; ++i)</div>
<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> j = 0; j &lt; 6; ++j)</div>
<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;      x (i, j) = real (complex_eigenvectors (i, j));</div>
<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160; </div>
<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160; </div>
<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;  <span class="comment">//--- Part B from the paper</span></div>
<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;<span class="comment"></span>  std::vector&lt;size_t&gt; candidate_indices;</div>
<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;  candidate_indices.resize (<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;size ());</div>
<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> p_i = 0; p_i &lt; candidate_indices.size (); ++p_i)</div>
<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;    candidate_indices[p_i] = p_i;</div>
<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160; </div>
<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;  <span class="comment">// Compute the v 6-vectors</span></div>
<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;  <span class="keyword">typedef</span> Eigen::Matrix&lt;double, 6, 1&gt; Vector6d;</div>
<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;  std::vector&lt;Vector6d, Eigen::aligned_allocator&lt;Vector6d&gt; &gt; v;</div>
<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;  v.resize (candidate_indices.size ());</div>
<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> p_i = 0; p_i &lt; candidate_indices.size (); ++p_i)</div>
<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;  {</div>
<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;    v[p_i].block&lt;3, 1&gt; (0, 0) = scaled_points_[p_i].cross (</div>
<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;                                  (*<a class="code" href="classpcl_1_1_covariance_sampling.html#a498a76c8589afc1a508f4daada7ab64d">input_normals_</a>)[(*indices_)[candidate_indices[p_i]]].getNormalVector3fMap ()).<span class="keyword">template</span> cast&lt;double&gt; ();</div>
<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    v[p_i].block&lt;3, 1&gt; (3, 0) = (*<a class="code" href="classpcl_1_1_covariance_sampling.html#a498a76c8589afc1a508f4daada7ab64d">input_normals_</a>)[(*indices_)[candidate_indices[p_i]]].getNormalVector3fMap ().template cast&lt;double&gt; ();</div>
<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;  }</div>
<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160; </div>
<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160; </div>
<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;  <span class="comment">// Set up the lists to be sorted</span></div>
<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;  std::vector&lt;std::list&lt;std::pair&lt;int, double&gt; &gt; &gt; L;</div>
<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;  L.resize (6);</div>
<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160; </div>
<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; 6; ++i)</div>
<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;  {</div>
<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> p_i = 0; p_i &lt; candidate_indices.size (); ++p_i)</div>
<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;      L[i].push_back (std::make_pair (p_i, fabs (v[p_i].dot (x.block&lt;6, 1&gt; (0, i)))));</div>
<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160; </div>
<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;    <span class="comment">// Sort in decreasing order</span></div>
<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;    L[i].sort (sort_dot_list_function);</div>
<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;  }</div>
<div class="line"><a name="l00218"></a><span class="lineno">  218</span>&#160; </div>
<div class="line"><a name="l00219"></a><span class="lineno">  219</span>&#160;  <span class="comment">// Initialize the 6 t&#39;s</span></div>
<div class="line"><a name="l00220"></a><span class="lineno">  220</span>&#160;  std::vector&lt;double&gt; t (6, 0.0);</div>
<div class="line"><a name="l00221"></a><span class="lineno">  221</span>&#160; </div>
<div class="line"><a name="l00222"></a><span class="lineno">  222</span>&#160;  sampled_indices.resize (<a class="code" href="classpcl_1_1_covariance_sampling.html#ad5e2ddf8d42b6a47fbf16398eff29833">num_samples_</a>);</div>
<div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;  std::vector&lt;bool&gt; point_sampled (candidate_indices.size (), <span class="keyword">false</span>);</div>
<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;  <span class="comment">// Now select the actual points</span></div>
<div class="line"><a name="l00225"></a><span class="lineno">  225</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> sample_i = 0; sample_i &lt; <a class="code" href="classpcl_1_1_covariance_sampling.html#ad5e2ddf8d42b6a47fbf16398eff29833">num_samples_</a>; ++sample_i)</div>
<div class="line"><a name="l00226"></a><span class="lineno">  226</span>&#160;  {</div>
<div class="line"><a name="l00227"></a><span class="lineno">  227</span>&#160;    <span class="comment">// Find the most unconstrained dimension, i.e., the minimum t</span></div>
<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;    <span class="keywordtype">size_t</span> min_t_i = 0;</div>
<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; 6; ++i)</div>
<div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;    {</div>
<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;      <span class="keywordflow">if</span> (t[min_t_i] &gt; t[i])</div>
<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;        min_t_i = i;</div>
<div class="line"><a name="l00233"></a><span class="lineno">  233</span>&#160;    }</div>
<div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160; </div>
<div class="line"><a name="l00235"></a><span class="lineno">  235</span>&#160;    <span class="comment">// Add the point from the top of the list corresponding to the dimension to the set of samples</span></div>
<div class="line"><a name="l00236"></a><span class="lineno">  236</span>&#160;    <span class="keywordflow">while</span> (point_sampled [L[min_t_i].front ().first])</div>
<div class="line"><a name="l00237"></a><span class="lineno">  237</span>&#160;      L[min_t_i].pop_front ();</div>
<div class="line"><a name="l00238"></a><span class="lineno">  238</span>&#160; </div>
<div class="line"><a name="l00239"></a><span class="lineno">  239</span>&#160;    sampled_indices[sample_i] = L[min_t_i].front ().first;</div>
<div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;    point_sampled[L[min_t_i].front ().first] = <span class="keyword">true</span>;</div>
<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;    L[min_t_i].pop_front ();</div>
<div class="line"><a name="l00242"></a><span class="lineno">  242</span>&#160; </div>
<div class="line"><a name="l00243"></a><span class="lineno">  243</span>&#160;    <span class="comment">// Update the running totals</span></div>
<div class="line"><a name="l00244"></a><span class="lineno">  244</span>&#160;    <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; 6; ++i)</div>
<div class="line"><a name="l00245"></a><span class="lineno">  245</span>&#160;    {</div>
<div class="line"><a name="l00246"></a><span class="lineno">  246</span>&#160;      <span class="keywordtype">double</span> val = v[sampled_indices[sample_i]].dot (x.block&lt;6, 1&gt; (0, i));</div>
<div class="line"><a name="l00247"></a><span class="lineno">  247</span>&#160;      t[i] += val * val;</div>
<div class="line"><a name="l00248"></a><span class="lineno">  248</span>&#160;    }</div>
<div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;  }</div>
<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160; </div>
<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;  <span class="comment">// Remap the sampled_indices to the input_ cloud</span></div>
<div class="line"><a name="l00252"></a><span class="lineno">  252</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; sampled_indices.size (); ++i)</div>
<div class="line"><a name="l00253"></a><span class="lineno">  253</span>&#160;    sampled_indices[i] = (*<a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>)[candidate_indices[sampled_indices[i]]];</div>
<div class="line"><a name="l00254"></a><span class="lineno">  254</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_covariance_sampling_html_a498a76c8589afc1a508f4daada7ab64d"><div class="ttname"><a href="classpcl_1_1_covariance_sampling.html#a498a76c8589afc1a508f4daada7ab64d">pcl::CovarianceSampling::input_normals_</a></div><div class="ttdeci">NormalsConstPtr input_normals_</div><div class="ttdoc">The normals computed at each point in the input cloud</div><div class="ttdef"><b>Definition:</b> covariance_sampling.h:138</div></div>
<div class="ttc" id="aclasspcl_1_1_covariance_sampling_html_ad5e2ddf8d42b6a47fbf16398eff29833"><div class="ttname"><a href="classpcl_1_1_covariance_sampling.html#ad5e2ddf8d42b6a47fbf16398eff29833">pcl::CovarianceSampling::num_samples_</a></div><div class="ttdeci">unsigned int num_samples_</div><div class="ttdoc">Number of indices that will be returned.</div><div class="ttdef"><b>Definition:</b> covariance_sampling.h:135</div></div>
<div class="ttc" id="aclasspcl_1_1_p_c_l_base_html_aaee847c8a517ebf365bad2cb182a6626"><div class="ttname"><a href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">pcl::PCLBase::indices_</a></div><div class="ttdeci">IndicesPtr indices_</div><div class="ttdoc">A pointer to the vector of point indices to use.</div><div class="ttdef"><b>Definition:</b> pcl_base.h:153</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a82eac9e85ffed525bb467e3cd58a87e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a82eac9e85ffed525bb467e3cd58a87e4">&#9670;&nbsp;</a></span>computeConditionNumber() <span class="overload">[1/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename PointNT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">double <a class="el" href="classpcl_1_1_covariance_sampling.html">pcl::CovarianceSampling</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, PointNT &gt;::computeConditionNumber</td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Compute the condition number of the input point cloud. The condition number is the ratio between the largest and smallest eigenvalues of the 6x6 covariance matrix of the cloud. The closer this number is to 1.0, the more stable the cloud is for ICP registration. </p>
<dl class="section return"><dt>返回</dt><dd>the condition number </dd></dl>
<div class="fragment"><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;{</div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;  Eigen::Matrix&lt;double, 6, 6&gt; covariance_matrix;</div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;  <span class="keywordflow">if</span> (!<a class="code" href="classpcl_1_1_covariance_sampling.html#ab2210a7ae6ce3f6bf71e13ee3cf9249b">computeCovarianceMatrix</a> (covariance_matrix))</div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;    <span class="keywordflow">return</span> (-1.);</div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160; </div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;  Eigen::EigenSolver&lt;Eigen::Matrix&lt;double, 6, 6&gt; &gt; eigen_solver;</div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;  eigen_solver.compute (covariance_matrix, <span class="keyword">true</span>);</div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160; </div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;  Eigen::MatrixXcd complex_eigenvalues = eigen_solver.eigenvalues ();</div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160; </div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;  <span class="keywordtype">double</span> max_ev = -std::numeric_limits&lt;double&gt;::max (),</div>
<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;      min_ev = std::numeric_limits&lt;double&gt;::max ();</div>
<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; 6; ++i)</div>
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;  {</div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;    <span class="keywordflow">if</span> (real (complex_eigenvalues (i, 0)) &gt; max_ev)</div>
<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;      max_ev = real (complex_eigenvalues (i, 0));</div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160; </div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;    <span class="keywordflow">if</span> (real (complex_eigenvalues (i, 0)) &lt; min_ev)</div>
<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;      min_ev = real (complex_eigenvalues (i, 0));</div>
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;  }</div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160; </div>
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;  <span class="keywordflow">return</span> (max_ev / min_ev);</div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;}</div>
<div class="ttc" id="aclasspcl_1_1_covariance_sampling_html_ab2210a7ae6ce3f6bf71e13ee3cf9249b"><div class="ttname"><a href="classpcl_1_1_covariance_sampling.html#ab2210a7ae6ce3f6bf71e13ee3cf9249b">pcl::CovarianceSampling::computeCovarianceMatrix</a></div><div class="ttdeci">bool computeCovarianceMatrix(Eigen::Matrix&lt; double, 6, 6 &gt; &amp;covariance_matrix)</div><div class="ttdoc">Computes the covariance matrix of the input cloud.</div><div class="ttdef"><b>Definition:</b> covariance_sampling.hpp:137</div></div>
</div><!-- fragment -->
</div>
</div>
<a id="a8f2b37a9be66d9745201d5cb1fa36774"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8f2b37a9be66d9745201d5cb1fa36774">&#9670;&nbsp;</a></span>computeConditionNumber() <span class="overload">[2/2]</span></h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename PointNT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">double <a class="el" href="classpcl_1_1_covariance_sampling.html">pcl::CovarianceSampling</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, PointNT &gt;::computeConditionNumber </td>
          <td>(</td>
          <td class="paramtype">const Eigen::Matrix&lt; double, 6, 6 &gt; &amp;&#160;</td>
          <td class="paramname"><em>covariance_matrix</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Compute the condition number of the input point cloud. The condition number is the ratio between the largest and smallest eigenvalues of the 6x6 covariance matrix of the cloud. The closer this number is to 1.0, the more stable the cloud is for ICP registration. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">covariance_matrix</td><td>user given covariance matrix </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>the condition number </dd></dl>
<div class="fragment"><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;{</div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;  Eigen::EigenSolver&lt;Eigen::Matrix&lt;double, 6, 6&gt; &gt; eigen_solver;</div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;  eigen_solver.compute (covariance_matrix, <span class="keyword">true</span>);</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160; </div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;  Eigen::MatrixXcd complex_eigenvalues = eigen_solver.eigenvalues ();</div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160; </div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;  <span class="keywordtype">double</span> max_ev = -std::numeric_limits&lt;double&gt;::max (),</div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;      min_ev = std::numeric_limits&lt;double&gt;::max ();</div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; 6; ++i)</div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;  {</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;    <span class="keywordflow">if</span> (real (complex_eigenvalues (i, 0)) &gt; max_ev)</div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;      max_ev = real (complex_eigenvalues (i, 0));</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160; </div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;    <span class="keywordflow">if</span> (real (complex_eigenvalues (i, 0)) &lt; min_ev)</div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;      min_ev = real (complex_eigenvalues (i, 0));</div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;  }</div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160; </div>
<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;  <span class="keywordflow">return</span> (max_ev / min_ev);</div>
<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="ab2210a7ae6ce3f6bf71e13ee3cf9249b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab2210a7ae6ce3f6bf71e13ee3cf9249b">&#9670;&nbsp;</a></span>computeCovarianceMatrix()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename PointNT &gt; </div>
      <table class="memname">
        <tr>
          <td class="memname">bool <a class="el" href="classpcl_1_1_covariance_sampling.html">pcl::CovarianceSampling</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, PointNT &gt;::computeCovarianceMatrix </td>
          <td>(</td>
          <td class="paramtype">Eigen::Matrix&lt; double, 6, 6 &gt; &amp;&#160;</td>
          <td class="paramname"><em>covariance_matrix</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Computes the covariance matrix of the input cloud. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[out]</td><td class="paramname">covariance_matrix</td><td>the computed covariance matrix. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>whether the computation succeeded or not </dd></dl>
<div class="fragment"><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;{</div>
<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;  <span class="keywordflow">if</span> (!initCompute ())</div>
<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;    <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160; </div>
<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;  <span class="comment">//--- Part A from the paper</span></div>
<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;  <span class="comment">// Set up matrix F</span></div>
<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;  Eigen::Matrix&lt;double, 6, Eigen::Dynamic&gt; f_mat = Eigen::Matrix&lt;double, 6, Eigen::Dynamic&gt; (6, <a class="code" href="classpcl_1_1_p_c_l_base.html#aaee847c8a517ebf365bad2cb182a6626">indices_</a>-&gt;size ());</div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;  <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> p_i = 0; p_i &lt; scaled_points_.size (); ++p_i)</div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;  {</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;    f_mat.block&lt;3, 1&gt; (0, p_i) = scaled_points_[p_i].cross (</div>
<div class="line"><a name="l00148"></a><span class="lineno">  148</span>&#160;                                     (*<a class="code" href="classpcl_1_1_covariance_sampling.html#a498a76c8589afc1a508f4daada7ab64d">input_normals_</a>)[(*indices_)[p_i]].getNormalVector3fMap ()).<span class="keyword">template</span> cast&lt;double&gt; ();</div>
<div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;    f_mat.block&lt;3, 1&gt; (3, p_i) = (*<a class="code" href="classpcl_1_1_covariance_sampling.html#a498a76c8589afc1a508f4daada7ab64d">input_normals_</a>)[(*indices_)[p_i]].getNormalVector3fMap ().template cast&lt;double&gt; ();</div>
<div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;  }</div>
<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160; </div>
<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;  <span class="comment">// Compute the covariance matrix C and its 6 eigenvectors (initially complex, move them to a double matrix)</span></div>
<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;  covariance_matrix = f_mat * f_mat.transpose ();</div>
<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div>
<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;}</div>
</div><!-- fragment -->
</div>
</div>
<a id="a77f474e133011e1cff3130c6c3732b78"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a77f474e133011e1cff3130c6c3732b78">&#9670;&nbsp;</a></span>setNormals()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename PointNT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_covariance_sampling.html">pcl::CovarianceSampling</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, PointNT &gt;::setNormals </td>
          <td>(</td>
          <td class="paramtype">const NormalsConstPtr &amp;&#160;</td>
          <td class="paramname"><em>normals</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set the normals computed on the input point cloud </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">normals</td><td>the normals computed for the input cloud </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;      { <a class="code" href="classpcl_1_1_covariance_sampling.html#a498a76c8589afc1a508f4daada7ab64d">input_normals_</a> = normals; }</div>
</div><!-- fragment -->
</div>
</div>
<a id="ac705c2a818792c53b1a3c64b6eca676d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac705c2a818792c53b1a3c64b6eca676d">&#9670;&nbsp;</a></span>setNumberOfSamples()</h2>

<div class="memitem">
<div class="memproto">
<div class="memtemplate">
template&lt;typename PointT , typename PointNT &gt; </div>
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void <a class="el" href="classpcl_1_1_covariance_sampling.html">pcl::CovarianceSampling</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_a.html">PointT</a>, PointNT &gt;::setNumberOfSamples </td>
          <td>(</td>
          <td class="paramtype">unsigned int&#160;</td>
          <td class="paramname"><em>samples</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Set number of indices to be sampled. </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">samples</td><td>the number of sample indices </td></tr>
  </table>
  </dd>
</dl>
<div class="fragment"><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;      { <a class="code" href="classpcl_1_1_covariance_sampling.html#ad5e2ddf8d42b6a47fbf16398eff29833">num_samples_</a> = samples; }</div>
</div><!-- fragment -->
</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>filters/include/pcl/filters/<a class="el" href="covariance__sampling_8h_source.html">covariance_sampling.h</a></li>
<li>filters/include/pcl/filters/impl/<a class="el" href="covariance__sampling_8hpp_source.html">covariance_sampling.hpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><b>pcl</b></li><li class="navelem"><a class="el" href="classpcl_1_1_covariance_sampling.html">CovarianceSampling</a></li>
    <li class="footer">制作者 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
